1. Field of the Invention
Embodiments of the present invention relate generally to rendering graphics images and more specifically to efficient rendering of multiple frame buffers with independent ray-tracing parameters.
2. Description of the Related Art
High-quality graphics rendering applications are commonly used to generate highly refined images, such as photorealistic graphics images, from mathematical models of three-dimensional (3D) graphics scenes. A graphics scene typically comprises scene objects with material properties, light sources with associated properties, camera positions, and other relevant data configured within a scene database of a modeling application. The modeling application conventionally generates a render database from the scene database. The high-quality rendering application traverses the render database to render a highly refined image from the graphics scene represented within the render database.
The high-quality graphics rendering application typically invokes a plurality of shaders, each configured to impart various physically and visually significant effects on objects within the graphics scene. A shaded pixel in a final image may comprise contributions, organized as contribution types, from the plurality of shaders. Each type of shader, such as a material shader, may generate shading results based on results from other shaders, such as lighting shaders. For example, a material shader may generate shading results for a pixel based on specular lighting and diffuse lighting for a point on a scene object, whereby each source of lighting is computed from a corresponding lighting shader. Each shader may save data for a corresponding contribution type in a separate frame buffer. A plurality of frame buffers may be combined in a compositing step to generate a final image.
Because the goal of rendering images with a high-quality rendering application is to produce final images to the highest technical and artistic standards, users oftentimes generate and store a plurality of rendered images, each including different scene segments for a given scene. Users can then perform adjustments to certain parameters of specific segments within the rendered images in order to optimize a given final image. For example, a user may adjust how bright a specular highlight appears on a certain object to establish an aesthetic relationship of the object to other scene objects. Such adjustments may be performed as part of a posterior compositing step used to generate final images by combining rendered images stored in corresponding frame buffers.
In order to generate the plurality of coherent rendered images in a set of corresponding frame buffers, high-quality rendering applications conventionally perform a render pass for each image within the plurality of rendered images. However, each render pass typically requires significant computation independent of specific shader computations. Therefore, superfluous computations are conventionally required within the high-quality rendering application to generate each additional rendered image, leading to inefficiency in the high-quality rendering application. Because the computational load related to a high-quality rendering application typically accounts for a majority of an overall computational load for a given rendered end product, this inefficiency can be very costly to users.
As the foregoing illustrates, what is needed in the art is a technique for improving efficiency in rendering multiple scene segments using high-quality rendering applications.